{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>SYS_NAME</th>\n",
       "      <th>CWXT_DB:184:C:\\</th>\n",
       "      <th>CWXT_DB:184:D:\\</th>\n",
       "      <th>COLLECTTIME</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34270787.33</td>\n",
       "      <td>80262592.65</td>\n",
       "      <td>2014-10-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34328899.02</td>\n",
       "      <td>83200151.65</td>\n",
       "      <td>2014-10-02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34327553.50</td>\n",
       "      <td>83208320.00</td>\n",
       "      <td>2014-10-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34288672.21</td>\n",
       "      <td>83099271.65</td>\n",
       "      <td>2014-10-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34190978.41</td>\n",
       "      <td>82765171.65</td>\n",
       "      <td>2014-10-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34187614.43</td>\n",
       "      <td>82522895.00</td>\n",
       "      <td>2014-10-06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34285280.22</td>\n",
       "      <td>82590885.00</td>\n",
       "      <td>2014-10-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34290578.41</td>\n",
       "      <td>82368173.30</td>\n",
       "      <td>2014-10-08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>33211870.40</td>\n",
       "      <td>82172263.30</td>\n",
       "      <td>2014-10-09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>33249253.87</td>\n",
       "      <td>81922685.00</td>\n",
       "      <td>2014-10-10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>33253832.53</td>\n",
       "      <td>84844722.95</td>\n",
       "      <td>2014-10-11</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34328058.03</td>\n",
       "      <td>84769868.90</td>\n",
       "      <td>2014-10-12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34328674.80</td>\n",
       "      <td>84558703.40</td>\n",
       "      <td>2014-10-13</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34234933.61</td>\n",
       "      <td>84207166.80</td>\n",
       "      <td>2014-10-14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34022726.41</td>\n",
       "      <td>84042911.90</td>\n",
       "      <td>2014-10-15</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>35016309.47</td>\n",
       "      <td>84129516.15</td>\n",
       "      <td>2014-10-16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34981412.82</td>\n",
       "      <td>83877754.85</td>\n",
       "      <td>2014-10-17</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34828871.38</td>\n",
       "      <td>83887520.40</td>\n",
       "      <td>2014-10-18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34832868.75</td>\n",
       "      <td>83538509.75</td>\n",
       "      <td>2014-10-19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34843372.75</td>\n",
       "      <td>86483653.00</td>\n",
       "      <td>2014-10-20</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34847749.42</td>\n",
       "      <td>82496743.30</td>\n",
       "      <td>2014-10-21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34829775.93</td>\n",
       "      <td>82300356.65</td>\n",
       "      <td>2014-10-22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34824290.49</td>\n",
       "      <td>82130251.65</td>\n",
       "      <td>2014-10-23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34827149.93</td>\n",
       "      <td>84844587.65</td>\n",
       "      <td>2014-10-24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34820088.89</td>\n",
       "      <td>84845444.65</td>\n",
       "      <td>2014-10-25</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34776030.47</td>\n",
       "      <td>84684911.05</td>\n",
       "      <td>2014-10-26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>34667722.51</td>\n",
       "      <td>84500606.35</td>\n",
       "      <td>2014-10-27</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>35705011.09</td>\n",
       "      <td>84145461.25</td>\n",
       "      <td>2014-10-28</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>35594215.37</td>\n",
       "      <td>84172525.10</td>\n",
       "      <td>2014-10-29</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>35411287.07</td>\n",
       "      <td>83957818.70</td>\n",
       "      <td>2014-10-30</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>35389055.02</td>\n",
       "      <td>83684789.75</td>\n",
       "      <td>2014-10-31</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>35385076.36</td>\n",
       "      <td>86485366.95</td>\n",
       "      <td>2014-11-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>35462038.02</td>\n",
       "      <td>86454023.45</td>\n",
       "      <td>2014-11-02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>35486821.33</td>\n",
       "      <td>86127041.70</td>\n",
       "      <td>2014-11-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>35471088.77</td>\n",
       "      <td>86161390.40</td>\n",
       "      <td>2014-11-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>35547564.55</td>\n",
       "      <td>85938933.90</td>\n",
       "      <td>2014-11-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>35606941.11</td>\n",
       "      <td>85645056.50</td>\n",
       "      <td>2014-11-06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>35546714.13</td>\n",
       "      <td>85272926.05</td>\n",
       "      <td>2014-11-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>35510966.73</td>\n",
       "      <td>88110097.75</td>\n",
       "      <td>2014-11-08</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>35491498.51</td>\n",
       "      <td>88128626.65</td>\n",
       "      <td>2014-11-09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>35601990.55</td>\n",
       "      <td>88075997.75</td>\n",
       "      <td>2014-11-10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>财务管理系统</td>\n",
       "      <td>35687972.60</td>\n",
       "      <td>87753526.65</td>\n",
       "      <td>2014-11-11</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   SYS_NAME  CWXT_DB:184:C:\\  CWXT_DB:184:D:\\ COLLECTTIME\n",
       "0    财务管理系统      34270787.33      80262592.65  2014-10-01\n",
       "1    财务管理系统      34328899.02      83200151.65  2014-10-02\n",
       "2    财务管理系统      34327553.50      83208320.00  2014-10-03\n",
       "3    财务管理系统      34288672.21      83099271.65  2014-10-04\n",
       "4    财务管理系统      34190978.41      82765171.65  2014-10-05\n",
       "5    财务管理系统      34187614.43      82522895.00  2014-10-06\n",
       "6    财务管理系统      34285280.22      82590885.00  2014-10-07\n",
       "7    财务管理系统      34290578.41      82368173.30  2014-10-08\n",
       "8    财务管理系统      33211870.40      82172263.30  2014-10-09\n",
       "9    财务管理系统      33249253.87      81922685.00  2014-10-10\n",
       "10   财务管理系统      33253832.53      84844722.95  2014-10-11\n",
       "11   财务管理系统      34328058.03      84769868.90  2014-10-12\n",
       "12   财务管理系统      34328674.80      84558703.40  2014-10-13\n",
       "13   财务管理系统      34234933.61      84207166.80  2014-10-14\n",
       "14   财务管理系统      34022726.41      84042911.90  2014-10-15\n",
       "15   财务管理系统      35016309.47      84129516.15  2014-10-16\n",
       "16   财务管理系统      34981412.82      83877754.85  2014-10-17\n",
       "17   财务管理系统      34828871.38      83887520.40  2014-10-18\n",
       "18   财务管理系统      34832868.75      83538509.75  2014-10-19\n",
       "19   财务管理系统      34843372.75      86483653.00  2014-10-20\n",
       "20   财务管理系统      34847749.42      82496743.30  2014-10-21\n",
       "21   财务管理系统      34829775.93      82300356.65  2014-10-22\n",
       "22   财务管理系统      34824290.49      82130251.65  2014-10-23\n",
       "23   财务管理系统      34827149.93      84844587.65  2014-10-24\n",
       "24   财务管理系统      34820088.89      84845444.65  2014-10-25\n",
       "25   财务管理系统      34776030.47      84684911.05  2014-10-26\n",
       "26   财务管理系统      34667722.51      84500606.35  2014-10-27\n",
       "27   财务管理系统      35705011.09      84145461.25  2014-10-28\n",
       "28   财务管理系统      35594215.37      84172525.10  2014-10-29\n",
       "29   财务管理系统      35411287.07      83957818.70  2014-10-30\n",
       "30   财务管理系统      35389055.02      83684789.75  2014-10-31\n",
       "31   财务管理系统      35385076.36      86485366.95  2014-11-01\n",
       "32   财务管理系统      35462038.02      86454023.45  2014-11-02\n",
       "33   财务管理系统      35486821.33      86127041.70  2014-11-03\n",
       "34   财务管理系统      35471088.77      86161390.40  2014-11-04\n",
       "35   财务管理系统      35547564.55      85938933.90  2014-11-05\n",
       "36   财务管理系统      35606941.11      85645056.50  2014-11-06\n",
       "37   财务管理系统      35546714.13      85272926.05  2014-11-07\n",
       "38   财务管理系统      35510966.73      88110097.75  2014-11-08\n",
       "39   财务管理系统      35491498.51      88128626.65  2014-11-09\n",
       "40   财务管理系统      35601990.55      88075997.75  2014-11-10\n",
       "41   财务管理系统      35687972.60      87753526.65  2014-11-11"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 模型构建 C盘\n",
    "# 详解AIC方式定信息准则　＋　ARMA \n",
    "import pandas as pd\n",
    "inputfile = 'attrsConstruction.xlsx'\n",
    "\n",
    "data = pd.read_excel(inputfile)\n",
    "df = data.iloc[:len(data)-5]\n",
    "df\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(-0.5635118147156262, 0.8790155702809298, 3, 38, {'1%': -3.6155091011809297, '5%': -2.941262357486514, '10%': -2.6091995013850418}, 859.9976220423233)\n",
      "0.8790155702809298\n",
      "1\n",
      "原始序列经过1阶差分后归于平稳，p值为9.572975592333072e-07\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:18: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame.\n",
      "Try using .loc[row_indexer,col_indexer] = value instead\n",
      "\n",
      "See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n"
     ]
    }
   ],
   "source": [
    "# 第 * 1 * 步--C盘---------平稳性检测\n",
    "#1)平稳性检测 ：判断是否平稳，若不平稳，对其进行差分处理直至平稳\n",
    "# 方法：采用单位根检验（ADF）的方法或者时序图的方法（见数据探索模块）\n",
    "# 注意：其他平稳性检验方法见steadyCheck.py文件\n",
    "from statsmodels.tsa.stattools import adfuller as ADF\n",
    "diff = 0\n",
    "# 判断D盘数据的平稳性，以及确定几次差分后平稳\n",
    "adf = ADF(df['CWXT_DB:184:C:\\\\'])\n",
    "print(adf) \n",
    "\n",
    "while adf[1] >= 0.05 : # adf[1]是p值，p值小于0.05认为是平稳的\n",
    "    print(adf[1])\n",
    "    diff = diff + 1\n",
    "    print(diff)\n",
    "    adf = ADF(df['CWXT_DB:184:C:\\\\'].diff(diff).dropna())#注意，差分后使用ADF检验时，必须去掉空值\n",
    "    \n",
    "print(u'原始序列经过%s阶差分后归于平稳，p值为%s' % (diff, adf[1]))\n",
    "df['CWXT_DB:184:C:\\\\_adf'] = df['CWXT_DB:184:C:\\\\'].diff(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "原始序列为非白噪声序列，对应的p值为：1.0609907508070775e-08\n",
      "一阶差分序列为白噪声序列，对应的p值为：0.4745522552554281\n"
     ]
    }
   ],
   "source": [
    "# 第 * 2 * 步--C盘---------白噪声检验\n",
    "# 目的：验证序列中有用信息是否已经被提取完毕，需要进行白噪声检验。若序列是白噪声序列，说明序列中有用信息已经被提取完，只剩随机扰动\n",
    "# 方法：采用LB统计量的方法进行白噪声检验\n",
    "# 若没有通过白噪声检验，则需要进行模型识别，识别其模型属于AR、MA还是ARMA。\n",
    "\n",
    "inputfile2 = 'attrsConstruction.xlsx'\n",
    "data1 = pd.read_excel(inputfile2)\n",
    "data1 = data1.iloc[:len(data1)-5]# 不使用最后五个数据（作为预测参考）\n",
    "\n",
    "# 白噪声检测\n",
    "from statsmodels.stats.diagnostic import acorr_ljungbox\n",
    "\n",
    "[[lb], [p]] = acorr_ljungbox(data1['CWXT_DB:184:C:\\\\'], lags = 1) ## lags是残差延迟个数\n",
    "if p < 0.05:\n",
    "    print (u'原始序列为非白噪声序列，对应的p值为：%s' % p)\n",
    "else:\n",
    "    print (u'原始序列为白噪声序列，对应的p值为：%s' % p)\n",
    "\n",
    "[[lb], [p]] = acorr_ljungbox(data1['CWXT_DB:184:C:\\\\'].diff(1).dropna(), lags = 1)\n",
    "if p < 0.05:\n",
    "    print (u'一阶差分序列为非白噪声序列，对应的p值为：%s' % p)\n",
    "else:\n",
    "    print (u'一阶差分序列为白噪声序列，对应的p值为：%s' % p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:191: FutureWarning: Creating a DatetimeIndex by passing range endpoints is deprecated.  Use `pandas.date_range` instead.\n",
      "  start=index[0], end=index[-1], freq=freq)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\model.py:488: HessianInversionWarning: Inverting hessian failed, no bse or cov_params available\n",
      "  'available', HessianInversionWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\model.py:508: ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals\n",
      "  \"Check mle_retvals\", ConvergenceWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\model.py:488: HessianInversionWarning: Inverting hessian failed, no bse or cov_params available\n",
      "  'available', HessianInversionWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\base\\model.py:508: ConvergenceWarning: Maximum Likelihood optimization failed to converge. Check mle_retvals\n",
      "  \"Check mle_retvals\", ConvergenceWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n",
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "             0            1            2            3            4\n",
      "0  1250.608691  1224.271131  1206.309678          NaN  1203.856252\n",
      "1  1192.649659  1194.567527  1195.903058          NaN  1195.878980\n",
      "2  1194.590234  1195.097381  1197.571540  1195.979544  1197.786101\n",
      "3  1196.134309  1198.606738  1198.582380  1197.911732  1199.649845\n",
      "4  1194.144212  1194.989864  1196.874237  1196.023417  1198.952620\n",
      "0  0    1250.608691\n",
      "   1    1224.271131\n",
      "   2    1206.309678\n",
      "   4    1203.856252\n",
      "1  0    1192.649659\n",
      "   1    1194.567527\n",
      "   2    1195.903058\n",
      "   4    1195.878980\n",
      "2  0    1194.590234\n",
      "   1    1195.097381\n",
      "   2    1197.571540\n",
      "   3    1195.979544\n",
      "   4    1197.786101\n",
      "3  0    1196.134309\n",
      "   1    1198.606738\n",
      "   2    1198.582380\n",
      "   3    1197.911732\n",
      "   4    1199.649845\n",
      "4  0    1194.144212\n",
      "   1    1194.989864\n",
      "   2    1196.874237\n",
      "   3    1196.023417\n",
      "   4    1198.952620\n",
      "dtype: float64\n"
     ]
    }
   ],
   "source": [
    "# 第 * 3 * 步----------模型识别\n",
    "# 方法：采用极大似然比方法进行模型的参数估计，估计各个参数的值。\n",
    "# 然后针对各个不同模型，采用信息准则方法（有三种：BIC/AIC/HQ)对模型进行定阶，确定p,q参数，从而选择最优模型。\n",
    "# 注意，进行此步时，index需要为时间序列类型\n",
    "# 确定最佳p、d、q的值\n",
    "inputfile3 = 'attrsConstruction.xlsx'\n",
    "data2 = pd.read_excel(inputfile3,index_col='COLLECTTIME')\n",
    "xtest_value=data2['CWXT_DB:184:C:\\\\'][-5:]\n",
    "data2 = data2.iloc[:len(data2)-5]# 不使用最后五个数据（作为预测参考） \n",
    "xdata2 = data2['CWXT_DB:184:C:\\\\']\n",
    "# ARIMA（p,d,q）中,AR是自回归,p为自回归项数；MA为滑动平均,q为滑动平均项数,d为使之成为平稳序列所做的差分次数(阶数)，由前一步骤知d=1\n",
    "# from statsmodels.tsa.arima_model import ARIMA#建立ARIMA（p,d，q）模型\n",
    "from statsmodels.tsa.arima_model import ARMA #建立ARMA（p,q）模型\n",
    "\n",
    "# 定阶\n",
    "# 目前选择模型常用如下准则!!!!!\n",
    "# 增加自由参数的数目提高了拟合的优良性，\n",
    "# AIC/BIC/HQ鼓励数据拟合的优良性但是尽量避免出现过度拟合(Overfitting)的情况。所以优先考虑的模型应是AIC/BIC/HQ值最小的那一个\n",
    "#* AIC=-2 ln(L) + 2 k 中文名字：赤池信息量 akaike information criterion (AIC)\n",
    "# * BIC=-2 ln(L) + ln(n)*k 中文名字：贝叶斯信息量 bayesian information criterion (BIC)\n",
    "# * HQ=-2 ln(L) + ln(ln(n))*k hannan-quinn criterion (HQ)\n",
    "\n",
    "# AIC方式定信息准则　＋　ARMA --------！！！模型检验中也要对应修改！！！------------------------------\n",
    "\n",
    "pmax = int(len(xdata2)/10) # 一般阶数不超过length/10\n",
    "qmax = int(len(xdata2)/10) # 一般阶数不超过length/10\n",
    "\n",
    "matrix = [] # aic矩阵\n",
    "for p in range(pmax+1):\n",
    "    tmp = []\n",
    "    for q in range(qmax+1):\n",
    "        try:#存在部分为空值，会报错\n",
    "#             tmp.append(ARMA(xdata2, (p,q)).fit().bic) #  BIC方式\n",
    "            tmp.append(ARMA(xdata2, (p,q)).fit().aic) #  AIC方式\n",
    "#             tmp.append(ARMA(xdata2, (p,q)).fit().hq) #  HQ方式\n",
    "        except:\n",
    "            tmp.append(None)\n",
    "            \n",
    "    matrix.append(tmp)\n",
    "    \n",
    "matrix = pd.DataFrame(matrix) # 从中可以找出最小值\n",
    "print(matrix)\n",
    "print(matrix.stack())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "当前AIC最小的p值与q值分别为：1、0\n",
      "1 0\n",
      "模型ARMA(1,0)符合白噪声检验\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:171: ValueWarning: No frequency information was provided, so inferred frequency D will be used.\n",
      "  % freq, ValueWarning)\n"
     ]
    }
   ],
   "source": [
    "# 第 * 4 * 步--C盘---------模型检验\n",
    "# 确定模型后，需要检验其残差序列是否是白噪声，若不是，说明，残差中还存在有用的信息，需要修改模型或者进一步提取。\n",
    "# 若其残差不是白噪声，重新更换p,q的值，重新确定\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "while 1:\n",
    "    p, q = matrix.stack().idxmin() # 先展平该表格，然后找出最小值的索引位置\n",
    "    print (u'当前AIC最小的p值与q值分别为：%s、%s' % (p,q))\n",
    "    \n",
    "    lagnum = 12 # 残差延迟个数\n",
    "\n",
    "    arma = ARMA(xdata2, (p,q)).fit() # 建立并训练模型\n",
    "    xdata_pred = arma.predict() # 预测\n",
    "    pred_error = (xdata_pred - xdata2).dropna() # 计算残差\n",
    "\n",
    "    # 白噪声检测\n",
    "    from statsmodels.stats.diagnostic import acorr_ljungbox\n",
    "\n",
    "    lbx, px = acorr_ljungbox(pred_error, lags = lagnum)\n",
    "    h = (px < 0.05).sum() # p值小于0.05，认为是非噪声\n",
    "    if h > 0:\n",
    "        print (u'模型ARMA(%s,%s)不符合白噪声检验' % (p,q))\n",
    "        print ('在AIC矩阵中去掉[%s,%s]组合，重新进行计算' % (p,q))\n",
    "        matrix.iloc[p,q] =  np.nan\n",
    "        arimafail = arma\n",
    "        continue\n",
    "    else:\n",
    "        print (p,q)\n",
    "        print (u'模型ARMA(%s,%s)符合白噪声检验' % (p,q))\n",
    "        break\n",
    "        \n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<caption>ARMA Model Results</caption>\n",
       "<tr>\n",
       "  <th>Dep. Variable:</th>  <td>CWXT_DB:184:C:\\</td> <th>  No. Observations:  </th>     <td>42</td>    \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Model:</th>            <td>ARMA(1, 0)</td>    <th>  Log Likelihood     </th>  <td>-593.325</td> \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Method:</th>             <td>css-mle</td>     <th>  S.D. of innovations</th> <td>324533.697</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Date:</th>          <td>Mon, 02 Sep 2019</td> <th>  AIC                </th>  <td>1192.650</td> \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Time:</th>              <td>18:15:00</td>     <th>  BIC                </th>  <td>1197.863</td> \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Sample:</th>           <td>10-01-2014</td>    <th>  HQIC               </th>  <td>1194.560</td> \n",
       "</tr>\n",
       "<tr>\n",
       "  <th></th>                 <td>- 11-11-2014</td>   <th>                     </th>      <td> </td>    \n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "            <td></td>               <th>coef</th>     <th>std err</th>      <th>z</th>      <th>P>|z|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>const</th>                 <td>  3.48e+07</td> <td> 3.59e+05</td> <td>   96.862</td> <td> 0.000</td> <td> 3.41e+07</td> <td> 3.55e+07</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>ar.L1.CWXT_DB:184:C:\\</th> <td>    0.8797</td> <td>    0.070</td> <td>   12.579</td> <td> 0.000</td> <td>    0.743</td> <td>    1.017</td>\n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<caption>Roots</caption>\n",
       "<tr>\n",
       "    <td></td>   <th>            Real</th>  <th>         Imaginary</th> <th>         Modulus</th>  <th>        Frequency</th>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>AR.1</th> <td>           1.1367</td> <td>          +0.0000j</td> <td>           1.1367</td> <td>           0.0000</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.summary.Summary'>\n",
       "\"\"\"\n",
       "                              ARMA Model Results                              \n",
       "==============================================================================\n",
       "Dep. Variable:        CWXT_DB:184:C:\\   No. Observations:                   42\n",
       "Model:                     ARMA(1, 0)   Log Likelihood                -593.325\n",
       "Method:                       css-mle   S.D. of innovations         324533.697\n",
       "Date:                Mon, 02 Sep 2019   AIC                           1192.650\n",
       "Time:                        18:15:00   BIC                           1197.863\n",
       "Sample:                    10-01-2014   HQIC                          1194.560\n",
       "                         - 11-11-2014                                         \n",
       "=========================================================================================\n",
       "                            coef    std err          z      P>|z|      [0.025      0.975]\n",
       "-----------------------------------------------------------------------------------------\n",
       "const                   3.48e+07   3.59e+05     96.862      0.000    3.41e+07    3.55e+07\n",
       "ar.L1.CWXT_DB:184:C:\\     0.8797      0.070     12.579      0.000       0.743       1.017\n",
       "                                    Roots                                    \n",
       "=============================================================================\n",
       "                  Real          Imaginary           Modulus         Frequency\n",
       "-----------------------------------------------------------------------------\n",
       "AR.1            1.1367           +0.0000j            1.1367            0.0000\n",
       "-----------------------------------------------------------------------------\n",
       "\"\"\""
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "arma.summary() # 当p,q值为0，0时，summary方法报错"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([35581705.89246708, 35488222.8438646 , 35405985.60720885,\n",
       "       35333641.33523785, 35269999.92533833, 35214014.4417105 ,\n",
       "       35164763.8927049 , 35121438.08000893, 35083324.27044403,\n",
       "       35049795.47111732])"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "forecast_values, forecasts_standard_error, forecast_confidence_interval = arma.forecast(5)#预测5次\n",
    "forecast_values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2014-11-07    3.551042e+07\n",
       "2014-11-08    3.545744e+07\n",
       "2014-11-09    3.542599e+07\n",
       "2014-11-10    3.540887e+07\n",
       "2014-11-11    3.550607e+07\n",
       "Freq: D, dtype: float64"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xdata_pred.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "DatetimeIndex: 5 entries, 2014-11-12 to 2014-11-16\n",
      "Data columns (total 2 columns):\n",
      "实际值    5 non-null float64\n",
      "预测值    5 non-null float64\n",
      "dtypes: float64(2)\n",
      "memory usage: 120.0 bytes\n"
     ]
    }
   ],
   "source": [
    "predictdata = pd.DataFrame(xtest_value)\n",
    "predictdata.insert(1,'CWXT_DB:184:C:\\\\_predict',forecast_values)\n",
    "predictdata.rename(columns={'CWXT_DB:184:C:\\\\':u'实际值','CWXT_DB:184:C:\\_predict':u'预测值'},inplace=True)\n",
    "predictdata.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>实际值</th>\n",
       "      <th>预测值</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>COLLECTTIME</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2014-11-12</th>\n",
       "      <td>35704312.58</td>\n",
       "      <td>35581705.89</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014-11-13</th>\n",
       "      <td>35704980.73</td>\n",
       "      <td>35488222.84</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014-11-14</th>\n",
       "      <td>34570385.45</td>\n",
       "      <td>35405985.61</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014-11-15</th>\n",
       "      <td>34673820.69</td>\n",
       "      <td>35333641.34</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2014-11-16</th>\n",
       "      <td>34793245.31</td>\n",
       "      <td>35269999.93</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                     实际值          预测值\n",
       "COLLECTTIME                          \n",
       "2014-11-12   35704312.58  35581705.89\n",
       "2014-11-13   35704980.73  35488222.84\n",
       "2014-11-14   34570385.45  35405985.61\n",
       "2014-11-15   34673820.69  35333641.34\n",
       "2014-11-16   34793245.31  35269999.93"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result_d = predictdata.applymap(lambda x: '%.2f' % x) # 将表格中各个浮点值都格式化\n",
    "result_d.to_excel('pedictdata_C_AIC_ARMA.xlsx')\n",
    "result_d"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                   实际值        预测值\n",
      "COLLECTTIME                      \n",
      "2014-11-12   35.704313  35.581706\n",
      "2014-11-13   35.704981  35.488223\n",
      "2014-11-14   34.570385  35.405986\n",
      "2014-11-15   34.673821  35.333641\n",
      "2014-11-16   34.793245  35.270000\n",
      "0.4623080019999975\n",
      "0.5334608267829601\n",
      "0.0132815193492983\n",
      "误差阈值为1.5\n",
      "平均绝对误差为：0.4623, \n",
      "均方根误差为：0.5335, \n",
      "平均绝对百分误差为：0.0133\n",
      "误差检验通过！\n"
     ]
    }
   ],
   "source": [
    "# 第 * 5 * 步--D盘---------模型评价\n",
    "# 为了评价时序预测模型效果的好坏，本章采用3个衡量模型预测精度的统计量指标：平均绝对误差、均方根误差、平均绝对百分误差\n",
    "# -*- coding:utf-8 -*-\n",
    "import pandas as pd\n",
    "\n",
    "inputfile4 = 'pedictdata_C_AIC_ARMA.xlsx'\n",
    "result = pd.read_excel(inputfile4,index_col='COLLECTTIME')\n",
    "result = result.applymap(lambda x: x/10**6)\n",
    "print (result)\n",
    "\n",
    "# 计算误差\n",
    "abs_ = (result[u'预测值']-result[u'实际值']).abs()\n",
    "mae_ = abs_.mean() # mae平均绝对误差\n",
    "rmas_ = ((abs_**2).mean())**0.5 #rmas均方根误差\n",
    "mape_ = (abs_/result[u'实际值']).mean() #mape平均绝对百分误差\n",
    "# print abs_\n",
    "print (mae_)\n",
    "print (rmas_)\n",
    "print (mape_)\n",
    "errors = 1.5\n",
    "print ('误差阈值为%s' % errors)\n",
    "if (mae_ < errors) & (rmas_ < errors) & (mape_ < errors):\n",
    "    print (u'平均绝对误差为：%.4f, \\n均方根误差为：%.4f, \\n平均绝对百分误差为：%.4f' % (mae_, rmas_, mape_))\n",
    "    print ('误差检验通过！')\n",
    "else:\n",
    "    print('误差检验不通过！')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "inputfile = 'attrsConstruction.xlsx'\n",
    " \n",
    "data = pd.read_excel(inputfile)\n",
    "df = data.iloc[:len(data)-5]\n",
    " \n",
    "inputfile1 = 'pedictdata_C.xlsx'# 预测值\n",
    "result = pd.read_excel(inputfile1)\n",
    "inputfile2 = 'pedictdata_D.xlsx'# 预测值\n",
    "result1 = pd.read_excel(inputfile2)\n",
    " \n",
    "\n",
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "plt.rc('figure',figsize=(10,8))\n",
    "import datetime\n",
    "import matplotlib.dates as mdates\n",
    "plt.rcParams['font.sans-serif']=['SimHei']\n",
    "plt.rcParams['axes.unicode_minus']= False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig  = plt.figure()\n",
    "fig.set(alpha=0.2)#设置图标透明度\n",
    " \n",
    "ax = fig.add_subplot(2,1,1)\n",
    "ax.set_title(u\"C盘空间时序预测图\")\n",
    " \n",
    "ax.set(xlabel=u'日期',ylabel=u'磁盘使用大小')\n",
    "# 图上时间间隔显示为10天\n",
    "ax.xaxis.set_major_locator(mdates.DayLocator(bymonthday=range(1,32), interval=7)) \n",
    "ax.xaxis.set_major_formatter(mdates.DateFormatter(\"%Y-%m-%d\"))\n",
    "plt.subplots_adjust(bottom=0.13,top=0.95)\n",
    "ax.plot(df['COLLECTTIME'],df['CWXT_DB:184:C:\\\\'],'ro--',)\n",
    "ax.plot(xdata_pred,'co--')\n",
    "ax.plot(result['COLLECTTIME'],result[u'实际值'],'g+--',)\n",
    "ax.plot(result['COLLECTTIME'],result[u'预测值'],'b*-',)\n",
    "ax.grid(axis='y',linestyle='--')\n",
    "ax.legend()\n",
    "fig.autofmt_xdate() #自动根据标签长度进行旋转\n",
    "'''for label in ax.xaxis.get_ticklabels():   #此语句完成功能同上\n",
    "       label.set_rotation(45)\n",
    "'''\n",
    " \n",
    "ax1 = fig.add_subplot(2,1,2)\n",
    "ax1.set_title(u\"D盘空间时序预测图\")\n",
    "# ax.set_xlabel(u'日期')\n",
    "ax1.set(xlabel=u'日期',ylabel=u'磁盘使用大小')\n",
    "# 图上时间间隔显示为10天\n",
    "ax1.xaxis.set_major_locator(mdates.DayLocator(bymonthday=range(1,32), interval=7)) \n",
    "ax1.xaxis.set_major_formatter(mdates.DateFormatter(\"%Y-%m-%d\"))\n",
    "plt.subplots_adjust(bottom=0.13,top=0.95)\n",
    "ax1.plot(df['COLLECTTIME'],df['CWXT_DB:184:D:\\\\'],'co--',)\n",
    "ax1.plot(result1['COLLECTTIME'],result1[u'实际值'],'m+--',)\n",
    "ax1.plot(result1['COLLECTTIME'],result1[u'预测值'],'y*-',) \n",
    "ax1.grid(axis='y',linestyle='--')\n",
    "ax1.legend()\n",
    "fig.autofmt_xdate() #自动根据标签长度进行旋转\n",
    "'''for label in ax.xaxis.get_ticklabels():   #此语句完成功能同上\n",
    "       label.set_rotation(45)\n",
    "'''\n",
    "plt.savefig('data_predict_pic.jpg')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# arimaf = ARIMA(xdata2, (0,1,1)).fit()\n",
    "# arimaf.forecast(5)[0]\n",
    "# 注意：\n",
    "# 说明：由于用HQ训练模型时，都是空值，所以，本例使用HQ不合适\n",
    "#-----ARIMA--BIC---\n",
    "#                    实际值        预测值\n",
    "# COLLECTTIME                      \n",
    "# 2014-11-12   35.704313  35.722538\n",
    "# 2014-11-13   35.704981  35.757104\n",
    "# 2014-11-14   34.570385  35.791669\n",
    "# 2014-11-15   34.673821  35.826235\n",
    "# 2014-11-16   34.793245  35.860800\n",
    "# 0.70232013\n",
    "# 0.890203752645\n",
    "# 0.0202432790493\n",
    "# 误差阈值为1.5\n",
    "# BIC模型下平均绝对误差为：0.7023, \n",
    "# 均方根误差为：0.8902, \n",
    "# 平均绝对百分误差为：0.0202\n",
    "# 误差检验通过！\n",
    "#-----ARIMA--AIC---\n",
    "#                    实际值        预测值\n",
    "# COLLECTTIME                      \n",
    "# 2014-11-12   35.704313  35.779972\n",
    "# 2014-11-13   35.704981  35.836938\n",
    "# 2014-11-14   34.570385  35.889601\n",
    "# 2014-11-15   34.673821  35.935428\n",
    "# 2014-11-16   34.793245  35.981256\n",
    "# 0.795290026\n",
    "# 0.976369605661\n",
    "# 0.0229009946085\n",
    "# AIC模型下平均绝对误差为：0.7953, \n",
    "# 均方根误差为：0.9764, \n",
    "# 平均绝对百分误差为：0.0229\n",
    "# 误差检验通过！\n",
    "# 通过对比AIC与BIC的结果，可以发现BIC的几个误差均较小\n",
    "#-----ARMA--BIC---\n",
    "#                    实际值        预测值\n",
    "# COLLECTTIME                      \n",
    "# 2014-11-12   35.704313  35.581706\n",
    "# 2014-11-13   35.704981  35.488223\n",
    "# 2014-11-14   34.570385  35.405986\n",
    "# 2014-11-15   34.673821  35.333641\n",
    "# 2014-11-16   34.793245  35.270000\n",
    "# 0.462308002\n",
    "# 0.533460826783\n",
    "# 0.0132815193493\n",
    "# 误差阈值为1.5\n",
    "# 平均绝对误差为：0.4623, \n",
    "# 均方根误差为：0.5335, \n",
    "# 平均绝对百分误差为：0.0133\n",
    "# 误差检验通过！\n",
    "\n",
    "# 综上：ARMA+BIC更优"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
